package com.javaee.demov2.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.javaee.demov2.persistent.entity.Ticket;
import com.javaee.demov2.utils.bean.PageResult;
import com.javaee.demov2.web.dto.ticket.TicketAddDto;
import com.javaee.demov2.web.dto.ticket.TicketQueryDto;
import com.javaee.demov2.web.dto.ticket.TicketUpdateDto;

import java.util.List;

public interface TicketService extends IService<Ticket> {
    /**
     * 添加票据
     */
    void add(TicketAddDto ticketAddDto);

    /**
     * 更新票据信息
     */
    void update(TicketUpdateDto ticketUpdateDto);

    /**
     * 判断票据编号是否存在
     *
     * @param ticketNumber 票据编号
     * @return true表示存在，false表示不存在
     */
    boolean isExistTicketNumber(String ticketNumber);

    /**
     * 复杂条件查询，包含分页信息
     *
     * @param ticketQueryDto 包含查询条件和分页信息的dto对象
     * @return 分页查询结果封装在PageResult中
     */
    PageResult<Ticket> query(TicketQueryDto ticketQueryDto);

    /**
     * 根据票据编号查询票据
     *
     * @param ticketNumber 票据编号
     * @return 对应的票据对象，如果不存在则返回null
     */
    Ticket findByTicketNumber(String ticketNumber);

    /**
     * 根据票据状态查询票据列表
     *
     * @param status 票据状态值
     * @return 符合该状态的票据列表
     */
    List<Ticket> findByStatus(Integer status);
}
